home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0"?>
- <!DOCTYPE modulesynopsis SYSTEM "../style/modulesynopsis.dtd">
- <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
- <!-- $Revision: 1.5.2.6 $ -->
-
- <!--
- Copyright 2002-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
- <modulesynopsis metafile="mod_dav.xml.meta">
-
- <name>mod_dav</name>
- <description>Distributed Authoring and Versioning
- (<a href="http://www.webdav.org/">WebDAV</a>) functionality</description>
- <status>Extension</status>
- <sourcefile>mod_dav.c</sourcefile>
- <identifier>dav_module</identifier>
-
- <summary>
- <p>This module provides class 1 and class 2 <a
- href="http://www.webdav.org">WebDAV</a> ('Web-based Distributed
- Authoring and Versioning') functionality for Apache. This
- extension to the HTTP protocol allows creating, moving,
- copying, and deleting resources and collections on a remote web
- server.</p>
- </summary>
- <seealso><directive module="mod_dav_fs">DavLockDB</directive></seealso>
- <seealso><directive module="core">LimitXMLRequestBody</directive></seealso>
- <seealso><a href="http://www.webdav.org">WebDAV Resources</a></seealso>
-
- <section id="example"><title>Enabling WebDAV</title>
- <p>To enable <module>mod_dav</module>, add the following to a
- container in your <code>httpd.conf</code> file:</p>
-
- <example>Dav On</example>
-
- <p>This enables the DAV file system provider, which is implemented
- by the <module>mod_dav_fs</module> module. Therefore, that module
- must be compiled into the server or loaded at runtime using the
- <directive module="mod_so">LoadModule</directive> directive.</p>
-
- <p>In addition, a location for the DAV lock database must be
- specified in the global section of your <code>httpd.conf</code>
- file using the <directive module="mod_dav_fs">DavLockDB</directive>
- directive:</p>
-
- <example>
- DavLockDB /usr/local/apache2/var/DavLock
- </example>
-
- <p>The directory containing the lock database file must be
- writable by the <directive module="mpm_common">User</directive>
- and <directive module="mpm_common" >Group</directive> under which
- Apache is running.</p>
-
- <p>You may wish to add a <directive module="core" type="section"
- >Limit</directive> clause inside the <directive module="core"
- type="section">Location</directive> directive to limit access to
- DAV-enabled locations. If you want to set the maximum amount of
- bytes that a DAV client can send at one request, you have to use
- the <directive module="core">LimitXMLRequestBody</directive>
- directive. The "normal" <directive module="core"
- >LimitRequestBody</directive> directive has no effect on DAV
- requests.</p>
-
- <example><title>Full Example</title>
- DavLockDB /usr/local/apache2/var/DavLock<br />
- <br />
- <Location /foo><br />
- <indent>
- Dav On<br />
- <br />
- AuthType Basic<br />
- AuthName DAV<br />
- AuthUserFile user.passwd<br />
- <br />
- <LimitExcept GET OPTIONS><br />
- <indent>
- require user admin<br />
- </indent>
- </LimitExcept><br />
- </indent>
- </Location><br />
- </example>
-
- <p><module>mod_dav</module> is a descendent of Greg Stein's <a
- href="http://www.webdav.org/mod_dav/">mod_dav for Apache 1.3</a>. More
- information about the module is available from that site.</p>
- </section>
-
- <section id="security"><title>Security Issues</title>
-
- <p>Since DAV access methods allow remote clients to manipulate
- files on the server, you must take particular care to assure that
- your server is secure before enabling <module>mod_dav</module>.</p>
-
- <p>Any location on the server where DAV is enabled should be
- protected by authentication. The use of HTTP Basic Authentication
- is not recommended. You should use at least HTTP Digest
- Authentication, which is provided by the
- <module>mod_auth_digest</module> module. Nearly all WebDAV clients
- support this authentication method. An alternative is Basic
- Authentication over an <a href="../ssl/">SSL</a> enabled
- connection.</p>
-
- <p>In order for <module>mod_dav</module> to manage files, it must
- be able to write to the directories and files under its control
- using the <directive module="mpm_common">User</directive> and
- <directive module="mpm_common">Group</directive> under which
- Apache is running. New files created will also be owned by this
- <directive module="mpm_common">User</directive> and <directive
- module="mpm_common">Group</directive>. For this reason, it is
- important to control access to this account. The DAV repository
- is considered private to Apache; modifying files outside of Apache
- (for example using FTP or filesystem-level tools) should not be
- allowed.</p>
-
- <p><module>mod_dav</module> may be subject to various kinds of
- denial-of-service attacks. The <directive
- module="core">LimitXMLRequestBody</directive> directive can be
- used to limit the amount of memory consumed in parsing large DAV
- requests. The <directive
- module="mod_dav">DavDepthInfinity</directive> directive can be
- used to prevent <code>PROPFIND</code> requests on a very large
- repository from consuming large amounts of memory. Another
- possible denial-of-service attack involves a client simply filling
- up all available disk space with many large files. There is no
- direct way to prevent this in Apache, so you should avoid giving
- DAV access to untrusted users.</p>
- </section>
-
- <section id="complex"><title>Complex Configurations</title>
-
- <p>One common request is to use <module>mod_dav</module> to
- manipulate dynamic files (PHP scripts, CGI scripts, etc). This is
- difficult because a <code>GET</code> request will always run the
- script, rather than downloading its contents. One way to avoid
- this is to map two different URLs to the content, one of which
- will run the script, and one of which will allow it to be
- downloaded and manipulated with DAV.</p>
-
- <example>
- Alias /phparea /home/gstein/php_files<br />
- Alias /php-source /home/gstein/php_files<br />
- <Location /php-source>
- <indent>
- DAV On<br />
- ForceType text/plain<br />
- </indent>
- </Location>
- </example>
-
- <p>With this setup, <code>http://example.com/phparea</code> can be
- used to access the output of the PHP scripts, and
- <code>http://example.com/php-source</code> can be used with a DAV
- client to manipulate them.</p>
- </section>
-
- <directivesynopsis>
- <name>Dav</name>
- <description>Enable WebDAV HTTP methods</description>
- <syntax>Dav On|Off|<var>provider-name</var></syntax>
- <default>Dav Off</default>
- <contextlist><context>directory</context></contextlist>
-
- <usage>
- <p>Use the <directive>Dav</directive> directive to enable the
- WebDAV HTTP methods for the given container:</p>
-
- <example>
- <Location /foo><br />
- <indent>
- Dav On<br />
- </indent>
- </Location>
- </example>
-
- <p>The value <code>On</code> is actually an alias for the default
- provider <code>filesystem</code> which is served by the <module
- >mod_dav_fs</module> module. Note, that once you have DAV enabled
- for some location, it <em>cannot</em> be disabled for sublocations.
- For a complete configuration example have a look at the <a
- href="#example">section above</a>.</p>
-
- <note type="warning">
- Do not enable WebDAV until you have secured your server. Otherwise
- everyone will be able to distribute files on your system.
- </note>
- </usage>
- </directivesynopsis>
-
- <directivesynopsis>
- <name>DavMinTimeout</name>
- <description>Minimum amount of time the server holds a lock on
- a DAV resource</description>
- <syntax>DavMinTimeout <var>seconds</var></syntax>
- <default>DavMinTimeout 0</default>
- <contextlist><context>server config</context><context>virtual host</context>
- <context>directory</context></contextlist>
-
- <usage>
- <p>When a client requests a DAV resource lock, it can also
- specify a time when the lock will be automatically removed by
- the server. This value is only a request, and the server can
- ignore it or inform the client of an arbitrary value.</p>
-
- <p>Use the <directive>DavMinTimeout</directive> directive to specify, in
- seconds, the minimum lock timeout to return to a client.
- Microsoft Web Folders defaults to a timeout of 120 seconds; the
- <directive>DavMinTimeout</directive> can override this to a higher value
- (like 600 seconds) to reduce the chance of the client losing
- the lock due to network latency.</p>
-
- <example><title>Example</title>
- <Location /MSWord><br />
- <indent>
- DavMinTimeout 600<br />
- </indent>
- </Location>
- </example>
- </usage>
- </directivesynopsis>
-
- <directivesynopsis>
- <name>DavDepthInfinity</name>
- <description>Allow PROPFIND, Depth: Infinity requests</description>
- <syntax>DavDepthInfinity on|off</syntax>
- <default>DavDepthInfinity off</default>
- <contextlist><context>server config</context><context>virtual host</context>
- <context>directory</context></contextlist>
-
- <usage>
- <p>Use the <directive>DavDepthInfinity</directive> directive to
- allow the processing of <code>PROPFIND</code> requests containing the
- header 'Depth: Infinity'. Because this type of request could constitute
- a denial-of-service attack, by default it is not allowed.</p>
- </usage>
- </directivesynopsis>
-
- </modulesynopsis>
-
-
-